package com.dms.modules.product.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dms.modules.product.entity.ProductFavorite;
import com.dms.modules.product.vo.ProductVO;

/**
 * 商品收藏服务接口
 */
public interface ProductFavoriteService extends IService<ProductFavorite> {

    /**
     * 添加收藏
     *
     * @param userId    用户ID
     * @param productId 商品ID
     * @return 是否成功
     */
    boolean addFavorite(Long userId, Long productId);

    /**
     * 取消收藏
     *
     * @param userId    用户ID
     * @param productId 商品ID
     * @return 是否成功
     */
    boolean cancelFavorite(Long userId, Long productId);

    /**
     * 获取用户收藏列表
     *
     * @param userId   用户ID
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @return 收藏分页列表
     */
    IPage<ProductFavorite> getUserFavorites(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 获取用户收藏的商品列表（包含商品详情）
     *
     * @param userId   用户ID
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @return 商品详情分页列表
     */
    IPage<ProductVO> getUserFavoriteProducts(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 检查商品是否已收藏
     *
     * @param userId    用户ID
     * @param productId 商品ID
     * @return 是否已收藏
     */
    boolean isFavorite(Long userId, Long productId);

    /**
     * 获取商品收藏数量
     *
     * @param productId 商品ID
     * @return 收藏数量
     */
    Integer getFavoriteCount(Long productId);
} 